package com.wang.util;

import com.wang.pojo.CheckData;
import com.wang.pojo.Device;
import com.wang.service.CheckDataService;
import com.wang.service.CheckDataServiceImpl;
import com.wang.service.DeviceService;
import com.wang.service.DeviceServiceImpl;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Random;

/**
 * @author wcy
 * @date 2023-06-29 11:27
 */
public class MakeDataUtil {



    public static String makeCodData(){

        //定义基数 16
        Float baseData = 16f;
        //1、定义随机数据范围
        //2、随机取+-  + 百分之50  - 百分之50
        //3、进行处理数据
        //4、最终值不能超过19.3  高于15.3
        Random random = new Random();
        Integer a1 = 0;
        for(int j = 0;j<3;j++){
            a1 += random.nextInt(2);

        }
        Integer a2 = 0;
        for(int j = 0;j<3;j++){
            a2 += random.nextInt(4);
        }
        Float changeValue =  (a1.floatValue()/10 + a2.floatValue()/100);

        Integer make = random.nextInt(10)+1;
        if(make>5){
                if(baseData>19.3){
                    baseData = baseData-changeValue;
                }else {
                    baseData = baseData + changeValue;
                }

            }else {
                if(baseData<15.3){
                    baseData= baseData+changeValue;
                }else {
                    baseData= baseData-changeValue;
                }
            }


        DecimalFormat df = new DecimalFormat("0.00");//创建一个df对象，传入0.00表示构造一个保留小数点后两位的df对象
        df.setRoundingMode(RoundingMode.HALF_UP);//设置规则，这里采用的也是四舍五入规则
        return df.format(baseData);//返回value（在返回之前使用df对象的格式化方法将数据格式化）



    }


    public static String makeRongjieyangData(){

        //定义基数 16
        Float baseData = 7.1f;
        //1、定义随机数据范围
        //2、随机取+-  + 百分之50  - 百分之50
        //3、进行处理数据
        //4、最终值不能超过2.0  高于1.5
        Random random = new Random();

        Integer a = random.nextInt(10);
        Float f = a/100f+0.1F;


        Integer make = random.nextInt(10)+1;
        if(make>5){
            if(baseData>11.3){
                baseData = baseData-f;
            }else {
                baseData = baseData + f;
            }

        }else {
            if(baseData<6.3){
                baseData= baseData+f;
            }else {
                baseData= baseData-f;
            }
        }



        DecimalFormat df = new DecimalFormat("0.00");//创建一个df对象，传入0.00表示构造一个保留小数点后两位的df对象
        df.setRoundingMode(RoundingMode.HALF_UP);//设置规则，这里采用的也是四舍五入规则
        return df.format(baseData);//返回value（在返回之前使用df对象的格式化方法将数据格式化）



    }


    public static String makeZhuoduData(){

        //定义基数 16
        Float baseData = 25.1f;
        //1、定义随机数据范围
        //2、随机取+-  + 百分之50  - 百分之50
        //3、进行处理数据
        //4、最终值不能超过2.0  高于1.5
        Random random = new Random();

        Integer a = random.nextInt(5);

        Double b = Math.random();
        Float f = a+b.floatValue();


        Integer make = random.nextInt(10)+1;
        if(make>5){
            if(baseData>30.3){
                baseData = baseData-f;
            }else {
                baseData = baseData + f;
            }

        }else {
            if(baseData<20.3){
                baseData= baseData+f;
            }else {
                baseData= baseData-f;
            }
        }



        DecimalFormat df = new DecimalFormat("0.00");//创建一个df对象，传入0.00表示构造一个保留小数点后两位的df对象
        df.setRoundingMode(RoundingMode.HALF_UP);//设置规则，这里采用的也是四舍五入规则
        return df.format(baseData);//返回value（在返回之前使用df对象的格式化方法将数据格式化）



    }
    public static String makeTempData(){

       //获取G8850_LM22A2306001 最后一次 的水温  然后-2
        DeviceService deviceService = SpringUtil.getBean("deviceServiceImpl", DeviceServiceImpl.class);
        Device  device = deviceService.selectDeviceByDevGId("G8850_LM22A2306001");
        CheckDataService checkDataService = SpringUtil.getBean("checkDataServiceImpl", CheckDataServiceImpl.class);
        CheckData checkData = checkDataService.selectLastParam(device.getCheckDataTable(),"水温");
        if(checkData !=null && EmptyUtil.isNotNull(checkData.getCheckDataValue())){
            Double dd = Double.parseDouble(checkData.getCheckDataValue());
            return String.valueOf(dd-2);
        }else {
            return "0";
        }




    }

    public static void main(String[] args) {

        for(int i = 0;i<100;i++) {
            System.out.println(makeTempData());
        }

    }


    public static String makeCodData2(){

        //定义基数 16
        Float baseData = 21f;
        //1、定义随机数据范围
        //2、随机取+-  + 百分之50  - 百分之50
        //3、进行处理数据
        //4、最终值不能超过19.3  高于15.3
        Random random = new Random();
        Integer a1 = 0;
        for(int j = 0;j<3;j++){
            a1 += random.nextInt(2);

        }
        Integer a2 = 0;
        for(int j = 0;j<3;j++){
            a2 += random.nextInt(4);
        }
        Float changeValue =  (a1.floatValue()/10 + a2.floatValue()/100);

        Integer make = random.nextInt(10)+1;
        if(make>5){
            if(baseData>19.3){
                baseData = baseData-changeValue;
            }else {
                baseData = baseData + changeValue;
            }

        }else {
            if(baseData<15.3){
                baseData= baseData+changeValue;
            }else {
                baseData= baseData-changeValue;
            }
        }


        DecimalFormat df = new DecimalFormat("0.00");//创建一个df对象，传入0.00表示构造一个保留小数点后两位的df对象
        df.setRoundingMode(RoundingMode.HALF_UP);//设置规则，这里采用的也是四舍五入规则
        return df.format(baseData);//返回value（在返回之前使用df对象的格式化方法将数据格式化）



    }
    public static String makeAnDanData(){

        //定义基数 16
        Float baseData = 1.7f;
        //1、定义随机数据范围
        //2、随机取+-  + 百分之50  - 百分之50
        //3、进行处理数据
        //4、最终值不能超过2.0  高于1.5
        Random random = new Random();

         Integer a = random.nextInt(10);
        Float f = a/100f+0.1F;


        Integer make = random.nextInt(10)+1;
        if(make>5){
            if(baseData>19.3){
                baseData = baseData-f;
            }else {
                baseData = baseData + f;
            }

        }else {
            if(baseData<15.3){
                baseData= baseData+f;
            }else {
                baseData= baseData-f;
            }
        }



        DecimalFormat df = new DecimalFormat("0.00");//创建一个df对象，传入0.00表示构造一个保留小数点后两位的df对象
        df.setRoundingMode(RoundingMode.HALF_UP);//设置规则，这里采用的也是四舍五入规则
        return df.format(baseData);//返回value（在返回之前使用df对象的格式化方法将数据格式化）



    }
    /*public static void main(String[] args) {

        //定义基数 16
        Float baseData = 16f;


        //1、定义随机数据范围
        //2、随机取+-  + 百分之60  - 百分之40
        //3、进行处理数据
        //4、最终值不能超过19.3  高于15.3
        Random random = new Random();
        for(int i = 0;i<1000;i++) {
            Integer a1 = 0;
            for(int j = 0;j<3;j++){
                 a1 += random.nextInt(2);

            }
            Integer a2 = 0;
            for(int j = 0;j<3;j++){
                 a2 += random.nextInt(4);

            }

           Float changeValue =  (a1.floatValue()/10 + a2.floatValue()/100);


            //System.out.println(changeValue);

            //随机取加减 60%+ 40%-
            Integer make = random.nextInt(10)+1;


            if(make>5){
                if(baseData>19.3){
                    baseData = baseData-changeValue;
                }else {
                    baseData = baseData + changeValue;
                }

            }else {
                if(baseData<15.3){
                    baseData= baseData+changeValue;
                }else {
                    baseData= baseData-changeValue;
                }



            }

            System.out.println(baseData);


        }




    }*/

}
